package com.spsoft.vatoutinv.service.vmsenterpriseinforisk.impl;

import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.spsoft.core.model.Result;
import com.spsoft.core.utils.BeanUtils;
import com.spsoft.vatoutinv.constants.DictConstant;
import com.spsoft.vatoutinv.entity.vmsenterpriseinforisk.VmsEnterpriseInfoRiskLog;
import com.spsoft.vatoutinv.enums.CommonEnum;
import com.spsoft.vatoutinv.mapper.VmsEnterpriseInfoRiskLogMapper;
import com.spsoft.vatoutinv.model.dto.vmsenterpriseinforisk.VmsEnterpriseInfoRiskLogDto;
import com.spsoft.vatoutinv.model.vo.vmsenterpriseinforisk.VmsEnterpriseInfoRiskLogVo;
import com.spsoft.vatoutinv.service.translate.impl.DictTranslate;
import com.spsoft.vatoutinv.service.vmsenterpriseinforisk.VmsEnterpriseInfoRiskLogService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 纳税人风险信息查询记录 服务实现类
 * </p>
 *
 * @author chenxudong
 * @since 2023-11-22
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class VmsEnterpriseInfoRiskLogServiceImpl extends ServiceImpl<VmsEnterpriseInfoRiskLogMapper, VmsEnterpriseInfoRiskLog> implements VmsEnterpriseInfoRiskLogService {

    private final VmsEnterpriseInfoRiskLogMapper vmsEnterpriseInfoRiskLogMapper;

    private final DictTranslate dictTranslate;

    @Override
    public Result<IPage<VmsEnterpriseInfoRiskLogVo>> queryVmsEnterpriseInfoRiskLog(VmsEnterpriseInfoRiskLogDto vmsEnterpriseInfoRiskLogDto) {
        // 获取分页数据
        Page<VmsEnterpriseInfoRiskLog> page = new Page<>(vmsEnterpriseInfoRiskLogDto.getPageNo(), vmsEnterpriseInfoRiskLogDto.getPageSize());
        IPage<VmsEnterpriseInfoRiskLog> IPage = vmsEnterpriseInfoRiskLogMapper.queryVmsEnterpriseInfoRiskLog(page, vmsEnterpriseInfoRiskLogDto);
        // 将数据库返回数据转换为VO返回前端
        IPage<VmsEnterpriseInfoRiskLogVo> IPageVo = convertIPage(IPage);
        return Result.OK(IPageVo);
    }

    /**
     * 将数据库返回数据转换为VO返回前端
     * @param IPage 数据库返回分页数据
     * @return IPageVo 返回前端分页数据
     */
    private IPage<VmsEnterpriseInfoRiskLogVo> convertIPage(IPage<VmsEnterpriseInfoRiskLog> IPage) {
        IPage<VmsEnterpriseInfoRiskLogVo> IPageVo = new Page<>();
        if (CollectionUtil.isEmpty(IPage.getRecords())) {
            return IPageVo;
        }
        IPageVo = IPage.convert(item -> {
            VmsEnterpriseInfoRiskLogVo vo = new VmsEnterpriseInfoRiskLogVo();
            // 转换数据
            BeanUtils.copyBeanProp(vo, item);
            // 根据执行状态，组装不同的返回结果
            String operateStatus = item.getOperateStatus();
            vo.setOperateStatus(operateStatus);
            if (CommonEnum.LEQI_RETURN_CODE_SUCCESS.getKey().equals(operateStatus)) {
                String nsrsbh = item.getNsrsbh();
                String fxnsrlx = dictTranslate.translate(DictConstant.VMS_FXNSRLX, item.getFxnsrlx());
                String nsrxydj = item.getNsrxydj();
                String nsryjjb = dictTranslate.translate(DictConstant.VMS_NSRYJJB, item.getNsryjjb());
                String fxnsrbz = dictTranslate.translate(DictConstant.VMS_FXNSRBZ, item.getFxnsrbz());
                // 组装返回报文
                vo.setOperateMsg("纳税人识别号" + nsrsbh + "，风险纳税人类型" + fxnsrlx + "，纳税人信用等级" + nsrxydj + "，纳税人预警级别" + nsryjjb + "，风险纳税人标志" + fxnsrbz);
            } else {
                vo.setOperateMsg(item.getOperateMsg());
            }
            vo.setCreateUser(item.getCreateUser());
            vo.setCreateUsername(item.getCreateUsername());
            return vo;
        });
        return IPageVo;
    }

}
